In conventional directory systems, one way of representing computer-readable data is in a hierarchical tree-like structure, commonly referred to as a Directory Information Tree (DIT). Some conventional DIT structures are limited for a variety of reasons. For example, some conventional larger DIT structures have limitations related to convenience because these larger DIT structures have certain technological constraints, such as the implementation of Lightweight Directory Access Protocol (LDAP). The LDAP is a relatively simple client-to-server protocol with no provision for distributed operations. In addition, some conventional implementations can operate to collect similar entries into a single “bucket” (e.g., dropping subscriber entries under a node called “subscribers”).
Other conventional DIT structures have limitations related to hosting. For example, in most cases, these conventional larger DIT structures tend to have single large buckets of information that reside on only a single machine or server. This can result in a reduction in performance and can limit the scalability of the DIT structure. In some conventional DIT structures this practice can be limited by the constraints on memory and processing, the cost of the machine, and replication and data management requirements often of gigabytes of information. Still other conventional DIT structures have limitations related to naming. In some cases, these conventional DIT structures attempt to distribute large flat DIT structures, which typically require one or more extra levels of nodes. Each of these extra nodes requires an additional name in the DIT structure. This practice is cumbersome and difficult to restructure, manage and expand because the management of the extra nodes is typically hard-coded into every application. That is, the distribution is being explicitly managed by the directory clients and not implicitly by the directory servers.
Another approach to representating computer-readable data is to use a proxy where the proxy caches search results and/or attributes as an index into other servers looking after sets of entries. This also has many limitations, such as the size of the index server, the single point of failure, start-up time, difficulty in keeping the index server up-to-date etc.